package 策略模式.first;

/**
 * 所有鸭子的超类
 * @author xuanjian
 * 此版本使用了继承，但由于继承，不能在这里加fly方法，因为并不是所有之类都会飞。
 * 即使在子类里重写这个fly方法也不行，如果有几百种鸭子，就很难维护更新。
 */
public abstract class Duck {

	public void quack() {
		System.out.println("叫法：所有鸭子都会这样“呱呱”叫！");
	}
	
	public void swim() {
		System.out.println("游泳：所有鸭子都会游泳。");
	}
	
	public void fly(){
		System.out.println("飞行：带我一起飞吧～");//并不是所有鸭子都会飞！
	}
	
	abstract void display();//鸭子外观不一样
	
	abstract void type();//鸭子种类

	public void test(){
		System.out.println("--------------------");
		type();
		display();
		quack();
		swim();
		fly();
		System.out.println("--------------------");
	}
}
